package com.qdlc.p2p.biz.service;

import java.util.List;

import com.qdlc.p2p.common.constant.BindingBankStatus;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.AccountBank;
import com.qdlc.p2p.dal.dto.User;
import com.qdlc.p2p.dal.model.AccountBankModel;

/**
 * 银行卡
 *
 * @author wuaj
 * @version 1.1.0.0
 * @since 2016年3月17日
 */
public interface AccountBankService {

    /**
     * 提现银行卡列表
     *
     * @return
     */
    List<AccountBank> list(long userId);

    /**
     * 我的银行卡列表
     *
     * @param userId
     * @return
     */
    List<AccountBank> listAll(long userId);

    /**
     * 添加
     *
     * @param bank
     */
    AccountBank save(AccountBank bank);

    /**
     * 删除/禁用
     *
     * @param user
     * @param bankNo
     */
    void disable(User user, String bankNo);

    /**
     * 统计用户银行卡数量
     *
     * @param userId
     * @return
     */
    int count(long userId);

    /**
     * 通过银行账户和用户ID获得AccountCashModel
     *
     * @param userId
     * @param account
     * @return
     */
    AccountBank find(long userId, String account);

    /**
     * 用户银行卡列表
     *
     * @param model
     * @param pageNumber
     * @param pageSize
     * @return
     */
    PageDataList<AccountBankModel> accountBankList(AccountBankModel model, int pageNumber, int pageSize);

    /**
     * 更新银行卡信息
     *
     * @param bank
     * @return
     */
    AccountBank update(AccountBank bank);

    /**
     * 判断是否已存在银行卡
     *
     * @param bankNo
     * @return
     */
    AccountBank findByBankNo(String bankNo);

    /**
     * 根据卡号，获取银行中文名称
     *
     * @param cardNo
     * @return
     */
    String getBankNameByCardNo(long userId, String cardNo);

    /**
     * 获取用户绑定银行卡的状态
     *
     * @param userId
     * @return
     * @author linya 2016-01-18
     * @see BindingBankStatus
     */
    BindingBankStatus bindingBankStatus(long userId);
}
